freeslot("SPR_SPLT", "S_SPLAT_STND1", "S_SPLAT_STND2", "S_SPLAT_BOING1", "S_SPLAT_BOINGS", "S_SPLAT_BOINGAAAAAAAA", "S_SPLAT_BOING2", "S_SPLAT_FALL1", "S_SPLAT_FALL2", "MT_SPLATS", "sfx_sping")

states[S_SPLAT_STND1] = {
	sprite = SPR_SPLT,
	frame = A,
	tics = 1,
	nextstate = S_SPLAT_STND1,
	action = A_Look,
	var1 = 0,
	var2 = 0,
}

states[S_SPLAT_STND2] = {
	sprite = SPR_SPLT,
	frame = B,
	tics = 1,
	nextstate = S_SPLAT_STND1,
	action = A_BunnyHop,
	var1 = 0,
	var2 = 0,
}

states[S_SPLAT_BOING1] = {
	sprite = SPR_SPLT,
	frame = B,
	tics = 1,
	nextstate = S_SPLAT_BOINGS,
	action = A_BunnyHop,
	var1 = 8,
	var2 = 10,
}

states[S_SPLAT_BOINGS] = {
	sprite = SPR_SPLT,
	frame = B,
	tics = 1,
	nextstate = S_SPLAT_BOING2,
	action = A_PlayActiveSound,
	var1 = 0,
	var2 = 0,
}

states[S_SPLAT_BOINGAAAAAAAA] = {
	sprite = SPR_SPLT,
	frame = B,
	tics = 1,
	nextstate = S_SPLAT_BOING2,
	action = A_Look,
	var1 = 0,
	var2 = 0,
}

states[S_SPLAT_BOING2] = {
	sprite = SPR_SPLT,
	frame = B,
	tics = -1,
	nextstate = S_SPLAT_BOING1,
	action = A_FaceTarget,
	var1 = 0,
	var2 = 0,
}

states[S_SPLAT_FALL1] = {
	sprite = SPR_SPLT,
	frame = A,
	tics = 1,
	nextstate = S_SPLAT_FALL2,
	action = nil,
	var1 = 0,
	var2 = 0,
}

states[S_SPLAT_FALL2] = {
	sprite = SPR_SPLT,
	frame = A,
	tics = 1,
	nextstate = S_SPLAT_BOING1,
	action = nil,
	var1 = 0,
	var2 = 0,
}

mobjinfo[MT_SPLATS] = {
		--$Name Splats
		--$Sprite SPLTA1
		--$Category VoidyZones
		doomednum = 1337,
		spawnstate = S_SPLAT_STND1,
		seestate = S_SPLAT_BOING1,
		seesound = sfx_None,
		attacksound = sfx_None,
		painstate = S_NULL,
		painsound = sfx_pop,
		meleestate = S_SPLAT_FALL1,
		missilestate = S_NULL,
		deathstate = S_XPLD_FLICKY,
		xdeathstate = S_SPLAT_FALL2,
		deathsound = sfx_pop,
		activesound = sfx_sping,
		raisestate = S_NULL,
		spawnhealth = 1,
		reactiontime = 32,
		painchance = 200,
		speed = 5*FRACUNIT,
		radius = 15*FRACUNIT,
		height = 58*FRACUNIT,
		dispoffset = 0,
		mass = 100,
		damage = 0,
		flags = MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE
}

sfxinfo[sfx_sping].caption = "Splats Boing"

local addThinker = function(mt)
	addHook("MobjThinker", function(mo)
		if not(mo.health and mo.valid) return end
		if mo.momz < 0
			P_SetMobjStateNF(mo, mo.info.spawnstate)
		end
		if (P_IsObjectOnGround(mo) or mo.standingslope)
			mo.state = mo.info.spawnstate
		end
		if mo.eflags&MFE_GOOWATER
		and abs(mo.momz) < mo.scale*2
			mo.momz = mo.scale*10*P_MobjFlip(mo)
		end
		if mo.target and R_PointToDist2(0,0,mo.momx,mo.momy) < mo.scale*2
			P_InstaThrust(mo, R_PointToAngle2(mo.x, mo.y, mo.target.x, mo.target.y), 0*FRACUNIT)
		end
	end, mt)
end

addThinker(MT_SPLATS)